DNS服务器(一):基本原理

一、简介

        网络中的主机通信是通过IP地址来实现的,通常IPv4的地址是四个数字加点组成,如果和每台主机通信我们都要去记忆IP地址的话,这通常对于人类来讲是相当痛苦的。于是网络上就有了一套为了解决这个问题的方案出现了,也就是DNS主机名称解析系统。它是一套能够将数以千万计的IP地址通过查询DNS数据库,轻松的转化成与之对应的一串单词字符串,也就是主机名,网络上称之为域名,相对于IP地址,用单词组成的域名明显好记多了。

二、DNS域名解析系统的层级关系

        DNS域名解析系统是有层级关系的,整个层级关系的表现形式就像一棵大树,每一层,我们称之为域。最顶层的域我们通常叫作根域,用点号表示,第二层通常用com、net、edu、gov、mil、org….,这层我们叫作顶级域,往下第三层,也就是我们经常见到的域名了,如,51cto.com,这一层我们称之为二级域,当二级域加上www后,就是第四层了,就这样一直往下细分。域名的写法通常是由小到大,从左往右书写,用点连接,最后加点表示根,整个结构如下图所示:

%EF%BC%9A%E5%9F%BA%E6%9C%AC%E5%8E%9F%E7%90%86/01.jpeg?raw=true)

三、DNS的资源记录

        我们要查询这些庞大数据当然要有专门的主机负责这些工作了,提供查询、存储DNS数据服务的主机我们称之为DNS服务器。网络上为了方便域名的注册、管理、解析,将DNS域名映射到特定类型的资源信息,我们称之为资源记录。资源记录是有类型的,

资源记录类型

SOA NS MX A PTR AAAA CNAME
起始授权 域名服务器 邮件交换器 域名–>IP IP–>域名 域名–>IPv6 别名记录
特点:只能有一个,而且必须是第一个 特点:用于表示DNS服务器的域名地址 特点:用于一个域下的邮件使用 特点:我们经常用到的就是它了 特点:和A记录相反,用于反向解析 特点:基本不用 特点:用于作A记录的域名的别名,

四、DNS服务器的工作原理

        假设我们以wubinary.blog.51cto.com为例:

        第一步:当我们使用DNS客户端请求查询此域名的的A记录时,DNS服务器首先会判断所要查询域名是属于哪个区域,是否在自己的管辖范围,假设此次域名不在管辖范围。

        第二步:为了确定当前域名是在哪个级别,DNS服务器要向根询求帮助,根会向DNS服务器返回所在域名的顶级域的DNS服务器地址,也就是根的下一级com的DNS服务器地址。此时DNS服器根据这个地址又再次查询,此次查询获得了51cto.com的DNS的服务器地址。于是终于确定了wubinary.blog.51cto.com的区域所在的DNS服务器地址了。DNS服务器的此类确定一个地址,并使用这个址去查询下一个的查询方式我们称之为迭代查询

        第三步:确定了区域地址后,51cto.com为了向DNS服务器返回结果需要一级一级的往下查。一开始查询到了blog.51cto.com的DNS服务器地址,于是blog.51cto.com的DNS服务器则向下查询。blog.51cto.com又查询到了wubinary.blog.51cto.com的DNS服务器地址,此时的地址正是DNS服务器要找的地址。到了这一步,wubinary.blog.51cto.com的DNS服务器则会把结果向它的上级汇报,于是上一级又向上一级汇报,最终结果回到了最初的DNS服务器,此时DNS客户端才能获得最终的IP地址。像这样DNS服务器的数据逐级遍历及逐级返回的过程,我们称之为递归查询

        如果我们查询的域名正好和当前查询使用的DNS服务器所匹配,则DNS服务器会先查询本地缓存是否存在,如果存在则返回缓存数据,如果不存在则去数据文件中读取数据并运回结果。

五、三个与解析有关的配置文件

        /etc/hosts:此文件早期在没有出现DNS服务器的时候,作用和DNS服务器类似,不过随着网络的发展,单个文件根本无法满足需求,于是,此文件通常运用于本地IP解析。

        /etc/resolv.conf:定义DNS服务器IP地址,本地解析域名通常使用的都是这里面定义的IP地址。

        /etc/nsswitch.conf:这个文件则是来决定先要使用/etc/hosts还是/etc/resolv.conf的设置。

        总结:理解DNS的树状结构、递归及迭代查询后,其它就好办了。